﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

using YouHP.Model;
using YouHP.Model.Group;

namespace YouHP.IDAL
{
    public interface IGroup
	{
		#region basic operations
		bool AddGroup(GroupInfo info);
		bool UpdateGroup(GroupInfo info);
		bool DeleteGroup(int[] ids);
        bool InvalidateGroup(int groupid);

		GroupInfo   GetGroupInfo(int id);
        GroupInfo GetGroupInfoByName(string groupName);

        // 取得推荐的疾病大圈子
        GroupInfo GetRecommendedSystemGroup(int dszid);

        // 更新圈子的点击次数
        bool IncreaseGroupHits(int groupId);
		#endregion
		
		#region list and search operations
		List<GroupInfo> GetGroupList(int pageSize, int pageIndex, out int count);

        // 取得最新创建的n个圈子（小圈子）
        List<GroupInfo> GetGroupListLatest(int n);

        // 取得最热的n个圈子 根据帖子数（小圈子）
        List<GroupInfo> GetGroupListHotest(int n);

        // 取得某个用户创建的圈子（小圈子）
        List<GroupInfo> GetGroupListByCreator(int pageSize, int pageIndex, int userId, out int count);

        // 取得某个用户加入的圈子列表(根据用户在圈子里的角色排序)（小圈子）
        List<GroupInfo> GetGroupListByUserId(int pageSize, int pageIndex, int userId, out int count);

        //取得某个用户所在的所有圈子
        List<GroupInfo> GetAllGroupsByUserId(int pageSize, int pageIndex, int userId, out int count); 

        // 取得系统的大圈子列表（大圈子）
        List<GroupInfo> GetSystemGroupList(int pageSize, int pageIndex, out int dataCount);

        // 根据圈子类型取得圈子（大圈子）
        List<GroupInfo> GetSystemGroupList(int pageSize, int pageIndex, int type, out int count);

		#endregion
        //根据条件搜索圈子
        List<GroupInfo> GetGroupListBySearch(int pageSize, int pageIndex, GroupSearchCondition cond, out int groupCount);

        //添加圈子邀请（圈主和普通成员都可以邀请）
        bool AddGroupInvite(GroupInviteInfo info);

        List<GroupInviteInfo> GetNewGroupInviteListByUserId(int pageSize, int pageIndex, int UserId, out int dataCount);

        bool DelGroupInvite(int id);
    }
}